package com.kaifamiao.jdbc.data.service;

import com.kaifamiao.jdbc.data.dao.CustomerDao;
import com.kaifamiao.jdbc.data.entity.Customer;
import com.kaifamiao.jdbc.helper.StringHelper;

import java.time.LocalDate;

public class CustomerService {

    private CustomerDao dao = new CustomerDao();

    public boolean save(Customer c){
        // 获得用户输入的原始密码
        final String password = c.getPassword();
        // 用工具类中的方法生成盐值
        final String salt = StringHelper.random(5);
        // 设置盐值
        c.setSalt( salt );

        // 对用户输入的原始密码进行加密(第一次)
        String encrypted = StringHelper.encrypt( password );

        StringBuilder builder = new StringBuilder();
        builder.append( encrypted );

        final int saltIndex = 20; // 确定盐值插入位置
        // 在加密后的字符串中指定位置插入盐值
        builder.insert( saltIndex, salt );

        // 对加了盐值后的字符再次加密(第二次加密)
        encrypted = StringHelper.encrypt( builder.toString() );
        // 将加盐且加密后的字符串设置到Customer对象上
        c.setPassword( encrypted );
        // 设置用户的注册日期
        c.setRegistrationDate(LocalDate.now());
        // 调用 CustomerDao 中的 save 方法完成保存操作
        boolean result = dao.save( c );
        // 返回结果
        return result;
    }

}
